package org.papervision3d.cameras {
	import org.papervision3d.Papervision3D;
	import org.papervision3d.core.Number3D;
	import org.papervision3d.core.Matrix3D;
	import org.papervision3d.core.proto.CameraObject3D;
	import org.papervision3d.objects.DisplayObject3D;
	public class LocalCamera3D extends CameraObject3D {
		public function LocalCamera3D(zoom:Number=1,focus:Number=300) {
			super(zoom,focus,null);
			this.x = 0;
			this.y = 0;
			this.z = 0;
		}
		public override function transformView( transform:Matrix3D=null ):void {

			super.transformView();
			view.n34 = 500; // bigger numbers indeed back away...

// zooming choices are constrained by overall rendering code path:
//
// 1) in sceneobject3d::renderCamera() invert the camera by calling transform view here
// 2) in sceneObject3d::renderCamera() then project every object into camera space and 2d
// 3) in vertices3d::project() ... calls displayobject3d::project() to recalc matrix and view
// 3) then does transforms all verts and translates by the view...
// 4) lets each one render itself...
//
// choices are
//	1) to simply change this.z or this.transform.n14 ... but this screws up camera pivot.
//		it might be possible to apply this in a different transform order... evaluate.
//	2) to change view.n34 - ie the zoom in the projection... but this hits cutting plane.
//	3) to change this.zoom - which does some nice predictable effects... is a bit wacky.
//
// perhaps the best option is to leave the camera at the distance it is
// with the same cutting plane
// and to zoom.

		}
	}
}
